#include <cstdio>
#include <vector>//已经包含algorithm头文件
using namespace std;
const int MAXN = 10000;
const int INF = 100000000;
struct edge{
    int aim;
    int weight;
};
vector<edge> vertex[MAXN];
typedef vector<edge>::iterator it;
int d[MAXN];//保存与源点的最短距离
bool bellman_adjecent_list(int s, int n, int v)//n为边的个数，v为结点的个数
{
    d[s] = 0;//设到自身的距离为0
    for(int i = 0; i < n - 1; ++i)
    {//遍历所有边n-1次
        for(int j = 0; j < v; ++j)
        {
            for(it ii = vertex[j].begin(); ii != vertex[j].end(); ++ii)
            {//迭代器写法，ii为地址
                if(d[ii->aim] > d[j] + ii->weight)
                {//松弛操作
                    d[ii->aim] = d[j] + ii->weight;
                }
            }
        }
    }
    //下面一个循环检测是否存在负环
    for(int i = 0; i < v; ++i)
    {
        for (int j = 0; j < vertex[i].size(); ++j)
        {
            if(d[vertex[i][j].aim] > d[i] + vertex[i][j].weight)
            {//还能继续relax，说明存在负环
                return false;
            }
        }
    }
    return true;
}
int main()
{
    fill(d, d + MAXN, INF);//初始化距离数组
}